package com.tiny.codegen.template.apiWord;

import java.io.File;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;

import com.tiny.codegen.template.ITemplateGenerate;
import com.tiny.codegen.util.FreeMarkerTemplateUtil;
import com.tiny.codegen.util.PropertyUtil;

/**
 * 生成数据库文档
 * 
 * @author Tiny</br>
 *         mail: 114740122@qq.com
 * @date 2018年7月10日  
 * @version 1.0 原帖地址:
 */
public class DbToWordGenerate implements ITemplateGenerate {

	/**
	 * 输出路径
	 */
	private String outpath;
	/** 模板路径 **/
	private String templateDir = null;
	/** 生成的文件名称 **/
	private String fileName = null;
	/** 控制层包名 **/
	private String controllerPackage = null;

	public DbToWordGenerate(String dir) throws Exception {
		// 设置模板路径
		this.templateDir = System.getProperty("user.dir") + "/" + dir;
		// TODO 测试使用
		// templateDir = "D:/codegen-tiny/swagger";
		System.out.println("模板路径:" + this.templateDir);
		if (!new File(templateDir).exists()) {
			throw new Exception("目录不存在");
		}
	}

	/**
	 * 执行代码生成
	 * 
	 * @throws Exception
	 */
	@Override
	public void generate() throws Exception {
		Connection connection = null;
		try {
			// 读取配置
			readConfig();
			// 获取模板名称
			File fileDir = File(controllerPackage);
			File[] fileList = fileDir.listFiles();
			String templateName = null;

			FreeMarkerTemplateUtil templateUtil = new FreeMarkerTemplateUtil(templateDir);
			Map<String, Object> dataMap = new HashMap<String, Object>();
			templateUtil.generateFileByTemplate(templateName, outpath, fileName, dataMap);
		} catch (Exception e) {
			throw e;
		} finally {
			if (null != connection) {
				connection.close();
			}
		}
	}

	/**
	 * 读取配置文件
	 * 
	 * @throws Exception
	 */
	public void readConfig() throws Exception {
		Map<String, String> configMap = PropertyUtil.readProperties(this.templateDir, "config.properties");
		fileName = configMap.get("fileName");
	}

	private File File(String templateDir2) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 扫描包
	 * 
	 * @throws Exception
	 */
	private void scanPackage() throws Exception {

	}

}
